<!DOCTYPE html>
<html>
  <head>
    <title>proxy</title>
    <style></style>
  </head>
  <body>
    <script>
      //   形如
      //   const proxy = new Proxy(target, handler)
      //   console.log("普通object", {})
      const proxy = new Proxy(
        {},
        {
          get: function (target, propKey) {
            console.log('key by proxy: ', propKey, target[propKey])
            return target[propKey]
          },
        },
      )
      proxy.index = 1
      proxy.index++

      //   !!!!!!注意
      //   必须是在proxy创建的对象上操作，而不是在原始对象上操作，否则不会被代理

      //   1、proxy实例可以被其他对象作为原型
      const obj1 = Object.create(proxy)
      obj1.index++

      //   这里出现了splice，很怪，存疑
      //   const obj = { index: 2 }
      //   Object.setPrototypeOf(obj, proxy)
      //   console.log('obj: ', obj)

      //   2、proxy的方法
      //   详见 https://es6.ruanyifeng.com/#docs/proxy
    </script>
  </body>
</html>
